home *** CD-ROM | disk | FTP | other *** search
/ MacWorld: Complete Mac Interactive / Macworld Complete Mac Interactive CD)(1994).iso / The Best of BMUG / Utilities / Text and Speech / Alpha.5.76 / Tcl / SystemCode / markStack.tcl < prev    next >
Text File  |  1994-03-08  |  963b  |  41 lines

  1. # ================================================================================
  2. # Simple mark stack implementation
  3. # ================================================================================
  4. proc pushMark {} {
  5.     global markStack
  6.     global markName
  7.     
  8.     set name mark$markName
  9.     incr markName
  10.     createTMark $name [getPos]
  11.     set fileName [lindex [winNames -f] 0]
  12.     set markStack [linsert $markStack 0 [list $fileName $name]]
  13.     message "Mark Pushed"
  14. }
  15.  
  16. proc popMark {} {
  17.     global markStack
  18.     if {[llength $markStack] == "0"} {
  19.         alertnote "The mark stack is empty!"
  20.         return
  21.     }
  22.     set mark [lindex [lindex $markStack 0] 1]
  23.     set markStack [lreplace $markStack 0 0]
  24.     gotoTMark $mark
  25.     message "Mark Popped"
  26. }
  27.  
  28.     
  29. # Returns 'list' minus all top-level elements matching 'pat'.
  30. # Used in 'closeHooks' to prune the mark stack.
  31. proc removePat {list pat} {
  32.     while 1 {
  33.         set ind [lsearch $list $pat]
  34.         if {$ind == "-1"} {return $list}
  35.         set list [lreplace $list $ind $ind]
  36.     }
  37. }
  38.  
  39.  
  40.  
  41.